package com.csun.cmny.provider.service;


import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.dto.BedOldmanQueryDto;
import com.csun.cmny.provider.model.vo.BedInfoVo;
import com.csun.cmny.provider.model.vo.BedOldmanDeviceAlertDataVo;
import com.csun.cmny.provider.model.vo.BedOldmanDeviceDataVo;
import com.csun.cmny.provider.model.vo.BedStatusVo;
import com.csun.cmny.provider.pojo.Bed;
import com.csun.cmny.provider.vo.BedNosVo;
import com.csun.cmny.provider.vo.BedVo;
import com.csun.cmny.provider.vo.OldmanBedInfoVo;

import java.util.List;
import java.util.Map;

public interface BedService {
    /**
     * 添加床位
     * author:liqian
     * date:2018-11-12 16:13
     */
    int insert(Bed bed);
    /**
     * 删除床位
     * author:liqian
     * date:2018-11-12 16:15
     */
    int deleteById(Integer bedId);
    /**
     * 修改床位
     * author:liqian
     * date:2018-11-12 16:20
     */
    int updateById(Bed bed);
    /**
     * 根据床位d查询床位信息
     * author:liqian
     * date:2018-11-12 11:16:25
     */
    BedVo selectById(Integer bedId);
    /**
     * 根据Bed查询Bed信息
     * author:liqian
     * date:2018-11-12 11:17:25
     */
    Bed selectByBed(Bed bed);
    /**
     * 根据房间id和床位编号查询床位
     * author:liqian
     * date:2018-11-12 11:56
     */
    Bed selectByRidAndBedNo(Bed bed);
    /**
     * 批量插入床位
     * author:liqian
     * date:2018-11-13 13:38
     */
    int insertBatch(List<Bed> bedList);
    /**
     * 将老人id置空
     * author:liqian
     * date:2018-11-16 15:03
     */
    int updateByOid(Integer oldmanId);
    /**
     * 根据老人id查询老人床位信息
     * author:liqian
     * date:2018-11-16 17:12
     */
    OldmanBedInfoVo selectByOid(Integer oldmanId);

    /**
     * query bed oldman device with list
     *
     * @param bedOldmanQueryDto bed oldman query dto
     *
     * @return  bed oldman device data vo
     */
    BedOldmanDeviceDataVo queryBedOldmanDeviceWithList(BedOldmanQueryDto bedOldmanQueryDto);

    /**
     * query bed oldman device alert data vo
     *
     * @param bedOldmanQueryDto bed oldman query dto
     *
     * @return  bed oldman device alert data vo
     */
    BedOldmanDeviceAlertDataVo queryBedOldmanDeviceAndAlertWithList(BedOldmanQueryDto bedOldmanQueryDto);


    /**
     * 床位重排
     * @param bedNoList
     * @return
     */
    int bedUpdateList(List<Bed> bedNoList);

    /**
     * 根据楼栋、楼层查询房间内床位信息
     * @param: [buildingId, floorNo, loginAuthDto]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.BedInfoVo>
     */
    List<BedInfoVo> queryBedInfo(Integer buildingId, Integer floorNo, Integer roomId,Long groupId, LoginAuthDto loginAuthDto);

    /**
     * 统计院内床位状态
     * @param: [loginAuthDto]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.BedStatusVo>
     */
    List<BedStatusVo> queryBedStatus(Integer buildingId,LoginAuthDto loginAuthDto);

    /**
     * 修改床位信息(由于老人修改床位时，将床位的老人id置空）
     * @param: [bed]
     * @return: java.lang.Integer
     */
    Integer updateBedOldmanIdAndStatus(Bed bed);

    /**
     * 清除床位上的老人，并且修改床位状态
     *
     * @param bedId
     *
     * @return
     */
    Integer cleanOldmanById(Integer bedId);

    /**
     * query bed oldman device alert data vo
     *
     * @param bedOldmanQueryDto bed oldman query dto
     *
     * @return  bed oldman device alert data vo
     */
    BedOldmanDeviceAlertDataVo queryBedOldmanDeviceAndAlertByGroupId(BedOldmanQueryDto bedOldmanQueryDto);

    /**
     * query bed oldman device alert data vo
     *
     * @param bedOldmanQueryDto bed oldman query dto
     *
     * @return  bed oldman device alert data vo
     */
    BedOldmanDeviceDataVo queryBedOldmanDeviceByGroupId(BedOldmanQueryDto bedOldmanQueryDto);

    /**
     * update bed statuc by id
     *
     * @param bed
     *
     * @return
     */
    Integer updateStatusById(Bed bed);

    List<BedNosVo> selectAllNo(Integer afterBed);
    /*
     * 集团化床位查询
     * */
    List<BedInfoVo> selectBedInfor(Integer buildingId, Integer floorNo, Integer roomId, Long groupId);
}
